/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import java.math.BigInteger;

/**
 *
 * @author JorG
 */
public class NumerosLetras {

    private String letras = new String();
    private String[] Letras = {"UNO", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ",
        "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE",
        "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA", "CIENTO",
        "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS"};
    private int[] Valores = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90,
        100, 200, 300, 400, 500, 600, 700, 800, 900};

    public NumerosLetras(BigInteger numeros) {
        StringBuffer bf = new StringBuffer(numeros.toString()).reverse();
        char[] n = String.valueOf(bf.toString()).toCharArray();
        if (n.length > 9) {
            letras = "ERROR: Solo cantidades menores a 10 digitos soportadas";
        } else {
            if (numeros.intValue() == 0) {
                letras = "CERO";
            } else if (numeros.intValue() == 100) {
                letras = "CIEN";
            } else if (numeros.intValue() == 1000) {
                letras = "MIL";
            } else if (numeros.intValue() == 100000) {
                letras = "CIEN MIL";
            } else if (numeros.intValue() == 1000000) {
                letras = "UN MILLON";
            } else if (numeros.intValue() == 100000000) {
                letras = "CIEN MILLONES";
            } else {
                if (n.length > 6) {
                    String val = String.valueOf(n[6]);
                    if (n.length > 7) {
                        val += String.valueOf(n[7]);
                    }
                    if (n.length > 8) {
                        val += String.valueOf(n[8]);
                    }
                    StringBuffer bf1 = new StringBuffer(val).reverse();
                    val = bf1.toString();
                    letras += getVal(Integer.valueOf(val));
                    if (n.length == 7 && String.valueOf(n[6]).equals("1")) {
                        letras += " MILLON ";
                    } else {
                        letras += " MILLONES ";
                    }
                }

                if (n.length > 3) {
                    String val = String.valueOf(n[3]);
                    if (n.length > 4) {
                        val += String.valueOf(n[4]);
                    }
                    if (n.length > 5) {
                        val += String.valueOf(n[5]);
                    }
                    StringBuffer bf1 = new StringBuffer(val).reverse();
                    val = bf1.toString();
                    if (Integer.valueOf(val) != 0) {
                        letras += getVal(Integer.valueOf(val)) + " MIL ";
                    }
                }

                if (n.length > 0) {
                    String val = String.valueOf(n[0]);
                    if (n.length > 1) {
                        val += String.valueOf(n[1]);
                    }
                    if (n.length > 2) {
                        val += String.valueOf(n[2]);
                    }
                    StringBuffer bf1 = new StringBuffer(val).reverse();
                    val = bf1.toString();
                    letras += getVal(Integer.valueOf(val));
                }
            }
        }
    }

    private String getVal(int numeros) {
        if (numeros == 0) {
            return "";
        }
        String val = new String();
        char[] n = String.valueOf(numeros).toCharArray();
        for (int i = 0; i < Valores.length; i++) {
            if (Valores[i] == numeros) {
                return Letras[i];
            }
        }
        if (n.length == 2) {
            if (String.valueOf(n[0]).equals("2")) {
                val = "VEINTI ";
            } else {
                String nn = String.valueOf(n[0]) + "0";
                int mm = Integer.valueOf(nn);
                for (int i = 0; i < Valores.length; i++) {
                    if (mm == Valores[i]) {
                        val = Letras[i] + " Y ";
                        break;
                    }
                }
            }
            for (int i = 0; i < 10; i++) {
                if (Integer.valueOf(String.valueOf(n[1])) == Valores[i]) {
                    val += Letras[i];
                    break;
                }
            }
        } else {
            String nn = String.valueOf(n[0]) + "00";
            int mm = Integer.valueOf(nn);
            for (int i = 0; i < Valores.length; i++) {
                if (mm == Valores[i]) {
                    val = Letras[i] + " ";
                    break;
                }
            }
            String nnn = String.valueOf(n[1]) + "0";
            int mmm = Integer.valueOf(nnn);
            for (int i = 0; i < Valores.length; i++) {
                if (mmm == Valores[i]) {
                    val += Letras[i] + " Y ";
                    break;
                }
            }
            for (int i = 0; i < 10; i++) {
                if (Integer.valueOf(String.valueOf(n[2])) == Valores[i]) {
                    val += Letras[i];
                    break;
                }
            }
        }
        return val;
    }

    public String getLetras() {
        return letras;
    }
}
